package com.kx.strategy_mode;

/**
 * Created on 2021/10/14.
 *
 * @author KaiXuan Xiao
 */
///////////////////////////////////////////////////////////////////////////
// 现金上下文, 定义收费规则
// 这里是策略模式的方式, 区别是不需要知道抽象工厂是谁, 代码更加解耦.
///////////////////////////////////////////////////////////////////////////
public class CashContext {
    CashSuper cs = null;
    public CashContext(String type){
        switch (type){
            case "正常收费":
                cs = new CashNormal();
                break;
            case "满300返100":
                cs = new CashReturn("300", "100");
                break;
            case "打8折":
                cs = new CashRebate("0.8");
                break;
        }
    }

    public double getResult(double money) {
        return cs.acceptCash(money);
    }
}
